package cn.edu.ncu.housinghub.service;

import cn.edu.ncu.housinghub.dto.request.checkout.CheckoutRequest;
import cn.edu.ncu.housinghub.dto.request.checkout.CheckoutHandleRequest;
import cn.edu.ncu.housinghub.vo.Result;

/**
 * 退租服务接口
 */
public interface CheckoutService {
    
    /**
     * 租客申请退租
     * @param request 退租申请请求
     * @param token 用户token
     * @return 申请结果
     */
    Result applyCheckout(CheckoutRequest request, String token);
    
    /**
     * 租客查看退租申请列表
     * @param token 用户token
     * @return 退租申请列表
     */
    Result getTenantCheckoutList(String token);
    
    /**
     * 房东查看退租申请列表
     * @param token 用户token
     * @return 退租申请列表
     */
    Result getLandlordCheckoutList(String token);
    
    /**
     * 房东处理退租申请
     * @param checkoutId 退租申请ID
     * @param request 处理请求
     * @param token 用户token
     * @return 处理结果
     */
    Result handleCheckout(Long checkoutId, CheckoutHandleRequest request, String token);
    
    /**
     * 获取退租申请详情
     * @param checkoutId 退租申请ID
     * @param token 用户token
     * @return 退租申请详情
     */
    Result getCheckoutDetail(Long checkoutId, String token);
    
    /**
     * 租客查看退租结果
     * @param token 用户token
     * @return 退租结果列表
     */
    Result getTenantCheckoutResults(String token);
}
